home *** CD-ROM | disk | FTP | other *** search
- /* Generated automatically from netcdf.h.in by configure. */
- /*
- * Copyright 1993, University Corporation for Atmospheric Research
- *
- * Permission to use, copy, modify, and distribute this software and its
- * documentation for any purpose without fee is hereby granted, provided
- * that the above copyright notice appear in all copies, that both that
- * copyright notice and this permission notice appear in supporting
- * documentation, and that the name of UCAR/Unidata not be used in
- * advertising or publicity pertaining to distribution of the software
- * without specific, written prior permission. UCAR makes no
- * representations about the suitability of this software for any purpose.
- * It is provided "as is" without express or implied warranty. It is
- * provided with no support and without obligation on the part of UCAR
- * Unidata, to assist in its use, correction, modification, or enhancement.
- *
- */
- /* "$Id: netcdf-irix32.h,v 1.5 1997/11/14 02:44:51 acheng Exp $" */
-
- #ifndef _NETCDF_
- #define _NETCDF_
-
- #ifdef __MWERKS__
- #ifndef HDF
- #define HDF
- #endif
- #endif /* __MWERKS__ */
-
- /*
- * The definitions ncvoid, USE_ENUM, and MAX_NC_OPEN, may need to be set
- * properly for your installation.
- */
-
- /*
- * Argument type in user functions (deprecated, backward compatibility)
- */
- #ifndef UD_NO_VOID
- #define ncvoid void
- #else
- /* system doesn't have void type */
- #define ncvoid char
- #endif
-
-
- /*
- * If xdr_enum works properly on your system, you can define
- * USE_ENUM so that nc_type is an enum.
- * Otherwise, delete this definition so that the nc_type is
- * an int and the valid values are #defined.
- */
- #ifndef __MWERKS__
- #define USE_ENUM
- #endif
-
-
- /*
- * The following macro is provided for backward compatibility only. If you
- * are a new user of netCDF, then you may safely ignore it. If, however,
- * you have an existing archive of netCDF files that use default
- * floating-point fill values, then you should know that the definition of
- * the default floating-point fill values changed with version 2.3 of the
- * netCDF package. Prior to this release, the default floating-point fill
- * values were not very portable: their correct behavior depended not only
- * upon the particular platform, but also upon the compilation
- * environment. This led to the definition of new, default floating-point
- * fill values that are portable across all platforms and compilation
- * environments. If you wish, however, to obtain the old, non-portable
- * floating-point fill values, then the following macro should have a true
- * value PRIOR TO BUILDING THE netCDF LIBRARY.
- *
- * Implementation details are contained in the section below on fill values.
- */
- #define NC_OLD_FILLVALUES 0
-
- /*
- * Fill values
- * These values are stuffed into newly allocated space as appropriate.
- * The hope is that one might use these to notice that a particular datum
- * has not been set.
- */
-
- #define FILL_BYTE ((char)-127) /* Largest Negative value */
- #define FILL_CHAR ((char)0)
- #define FILL_SHORT ((short)-32767)
- #define FILL_LONG ((long)-2147483647)
-
- #if !NC_OLD_FILLVALUES
-
- # define FILL_FLOAT 9.9692099683868690e+36 /* near 15 * 2^119 */
- # define FILL_DOUBLE 9.9692099683868690e+36
-
- #else /* NC_OLD_FILLVALUES below */
-
- /*
- * This section is provided for backward compatibility only. Using
- * XDR infinities for floating-point fill values has caused more problems
- * than it has solved. We encourage you to define your own data-specific
- * fill values rather than use default ones (see `_FillValue' below).
- * If, however, you *must* use default fill values, then you should use
- * the above fill values rather than the ones in this section.
- */
-
- /*
- * XDR_F_INFINITY is a float value whose EXTERNAL (xdr)
- * represention is ieee floating infinity.
- * XDR_D_INFINITY is a double value whose EXTERNAL (xdr)
- * represention is ieee double floating point infinity.
- * These are used as default fill values below.
- *
- * This section shows three techniques for setting these:
- * Direct assignment (vax, cray) - works for non IEEE machines
- * Doesn't work when IEEE machines don't allow
- * float or double constants whose values are infinity.
- * Use of a union (preferred portable method) - should work on
- * any ANSI compiler with IEEE floating point representations,
- * modulo byte order and sizeof() considerations.
- * Use of pointer puns - may work with many older compilers
- * which don't allow intialization of unions.
- * Often doesn't work with compilers which have strict
- * alignment rules.
- */
-
- /* Direct assignment. All cases should be mutually exclusive */
-
- #ifdef vax
- #define XDR_D_INFINITY 1.7014118346046923e+38
- #define XDR_F_INFINITY 1.70141173e+38
- #endif /* vax */
-
- #ifdef cray
- #define XDR_D_INFINITY 1.797693134862313000e+308
- #define XDR_F_INFINITY XDR_D_INFINITY
- #endif /* cray */
-
- #ifdef notdef /* you might want to try these, on an IEEE machine */
- #define XDR_D_INFINITY 1.797693134862315900e+308
- #define XDR_F_INFINITY 3.40282357e+38
- #endif
-
- #ifdef __STDC__
- /* Use of a union, assumes IEEE representation and 1 byte unsigned char */
-
- #ifndef XDR_D_INFINITY
- #define USE_D_UNION
- union xdr_d_union {unsigned char bb[8]; double dd;} ;
- extern union xdr_d_union xdr_d_infs ; /* instantiated in array.c */
- #define XDR_D_INFINITY (xdr_d_infs.dd)
- #endif /* !XDR_D_INFINITY */
-
- #ifndef XDR_F_INFINITY
- #define USE_F_UNION
- union xdr_f_union {unsigned char bb[4]; float ff;} ;
- extern union xdr_f_union xdr_f_infs ; /* instantiated in array.c */
- #define XDR_F_INFINITY (xdr_f_infs.ff)
- #endif /* !XDR_F_INFINITY */
-
-
- #else /* __STDC__ */
- /* Use of a pointer pun, assumes IEEE representation, 4 byte long */
-
- #ifndef XDR_D_INFINITY
- #define USE_D_LONG_PUN
- extern long xdr_d_infinity[] ; /* instantiated in array.c */
- #define XDR_D_INFINITY *(double *)xdr_d_infinity
- #endif /* !XDR_D_INFINITY */
-
- #ifndef XDR_F_INFINITY
- #define USE_F_LONG_PUN
- extern long xdr_f_infinity ; /* instantiated in array.c */
- #define XDR_F_INFINITY *((float *)&xdr_f_infinity)
- #endif /* !XDR_F_INFINITY */
-
- #endif /* __STDC__ */
-
- /* End of INFINITY section */
-
- #define FILL_FLOAT XDR_F_INFINITY /* IEEE Infinity */
- #define FILL_DOUBLE XDR_D_INFINITY
-
- #endif /* NC_OLD_FILLVALUES above */
-
-
- /*
- * masks for the struct NC flags field; passed in as 'mode' arg to
- * nccreate and ncopen.
- *
- */
- #define NC_RDWR 1 /* read/write, 0 => readonly */
- #define NC_CREAT 2 /* in create phase, cleared by ncendef */
- #define NC_EXCL 4 /* on create, don't destroy existing file */
- #define NC_INDEF 8 /* in define mode, cleared by ncendef */
- #define NC_NSYNC 0x10 /* synchronise numrecs on change */
- #define NC_HSYNC 0x20 /* synchronise whole header on change */
- #define NC_NDIRTY 0x40 /* numrecs has changed */
- #define NC_HDIRTY 0x80 /* header info has changed */
- #define NC_NOFILL 0x100 /* Don't fill vars on endef and increase of record */
- #define NC_LINK 0x8000 /* isa link */
-
- #define NC_FILL 0 /* argument to ncsetfill to clear NC_NOFILL */
-
- /*
- * 'mode' arguments for nccreate and ncopen
- */
- #define NC_NOWRITE 0
- #define NC_WRITE NC_RDWR
- #define NC_CLOBBER (NC_INDEF | NC_CREAT | NC_RDWR)
- #define NC_NOCLOBBER (NC_INDEF | NC_EXCL | NC_CREAT | NC_RDWR)
-
- /*
- * 'size' argument to ncdimdef for an unlimited dimension
- */
- #define NC_UNLIMITED 0L
-
- /*
- * attribute id to put/get a global attribute
- */
- #define NC_GLOBAL -1
-
- #ifndef HDF
- /*
- * This can be as large as the maximum number of stdio streams
- * you can have open on your system.
- */
- #define MAX_NC_OPEN 32
-
- /*
- * These maximums are enforced by the interface, to facilitate writing
- * applications and utilities. However, nothing is statically allocated to
- * these sizes internally.
- */
- #define MAX_NC_DIMS 5000 /* max dimensions per file */
- #define MAX_NC_ATTRS 3000 /* max global or per variable attributes */
- #define MAX_NC_VARS 5000 /* max variables per file */
- #define MAX_NC_NAME 256 /* max length of a name */
- #define MAX_VAR_DIMS 32 /* max per variable dimensions */
-
- /*
- * Added feature.
- * If you wish a variable to use a different value than the above
- * defaults, create an attribute with the same type as the variable
- * and the following reserved name. The value you give the attribute
- * will be used as the fill value for that variable.
- */
- #define _FillValue "_FillValue"
-
- #else /* HDF */
-
- #include "hlimits.h" /* Hard coded constants for HDF library */
-
- #endif /* HDF */
-
- #ifdef USE_ENUM
- /*
- * The netcdf data types
- */
- typedef enum {
- NC_UNSPECIFIED, /* private */
- NC_BYTE,
- NC_CHAR,
- NC_SHORT,
- NC_LONG,
- NC_FLOAT,
- NC_DOUBLE,
- /* private */
- NC_BITFIELD,
- NC_STRING,
- NC_IARRAY,
- NC_DIMENSION,
- NC_VARIABLE,
- NC_ATTRIBUTE
- } nc_type ;
- #else
- typedef int nc_type ;
- #define NC_UNSPECIFIED 0 /* private */
- #define NC_BYTE 1
- #define NC_CHAR 2
- #define NC_SHORT 3
- #define NC_LONG 4
- #define NC_FLOAT 5
- #define NC_DOUBLE 6
- /* private */
- #define NC_BITFIELD 7
- #define NC_STRING 8
- #define NC_IARRAY 9
- #define NC_DIMENSION 10
- #define NC_VARIABLE 11
- #define NC_ATTRIBUTE 12
- #endif
-
-
- /*
- * C data types corresponding to netCDF data types:
- */
- /* Don't use these or the C++ interface gets confused
- typedef char ncchar;
- typedef char ncbyte;
- typedef short ncshort;
- typedef float ncfloat;
- typedef double ncdouble;
- */
-
- /*
- * Variables/attributes of type NC_LONG should use the C type 'nclong'
- */
- #if defined _CRAYMPP
- typedef short nclong;
- #elif defined __alpha || (_MIPS_SZLONG == 64)
- typedef int nclong;
- #else
- typedef long nclong; /* default, compatible type */
- #endif
-
-
- /*
- * Global netcdf error status variable
- * Initialized in error.c
- */
- #define NC_NOERR 0 /* No Error */
- #define NC_EBADID 1 /* Not a netcdf id */
- #define NC_ENFILE 2 /* Too many netcdfs open */
- #define NC_EEXIST 3 /* netcdf file exists && NC_NOCLOBBER */
- #define NC_EINVAL 4 /* Invalid Argument */
- #define NC_EPERM 5 /* Write to read only */
- #define NC_ENOTINDEFINE 6 /* Operation not allowed in data mode */
- #define NC_EINDEFINE 7 /* Operation not allowed in define mode */
- #define NC_EINVALCOORDS 8 /* Coordinates out of Domain */
- #define NC_EMAXDIMS 9 /* MAX_NC_DIMS exceeded */
- #define NC_ENAMEINUSE 10 /* String match to name in use */
- #define NC_ENOTATT 11 /* Attribute not found */
- #define NC_EMAXATTS 12 /* MAX_NC_ATTRS exceeded */
- #define NC_EBADTYPE 13 /* Not a netcdf data type */
- #define NC_EBADDIM 14 /* Invalid dimension id */
- #define NC_EUNLIMPOS 15 /* NC_UNLIMITED in the wrong index */
- #define NC_EMAXVARS 16 /* MAX_NC_VARS exceeded */
- #define NC_ENOTVAR 17 /* Variable not found */
- #define NC_EGLOBAL 18 /* Action prohibited on NC_GLOBAL varid */
- #define NC_ENOTNC 19 /* Not a netcdf file */
- #define NC_ESTS 20 /* In Fortran, string too short */
- #define NC_EMAXNAME 21 /* MAX_NC_NAME exceeded */
- #define NC_ENTOOL NC_EMAXNAME /* Backward compatibility */
- #define NC_EUNLIMIT 22 /* NC_UNLIMITED size already in use */
-
- #define NC_EXDR 32 /* */
- #define NC_SYSERR -1
-
- extern int ncerr ;
-
- /*
- * Global options variable. Used to determine behavior of error handler.
- * Initialized in lerror.c
- */
- #define NC_FATAL 1
- #define NC_VERBOSE 2
-
- extern int ncopts ; /* default is (NC_FATAL | NC_VERBOSE) */
-
- /*
- * NB: The following feature-test line is too long in order to accomodate a
- * bug in the VMS 5.3 C compiler.
- */
- #ifndef HAVE_PROTOTYPES
- # if defined(__STDC__) || defined(__GNUC__) || defined(__cplusplus) || defined(c_plusplus)
- # define HAVE_PROTOTYPES
- # endif
- #endif
-
- #undef PROTO
- #ifdef HAVE_PROTOTYPES
- # define PROTO(x) x
- #else
- # define PROTO(x) ()
- #endif
-
- #include "hdf2netcdf.h"
-
- #ifdef __cplusplus
- extern "C" {
- #endif
-
- extern int nccreate PROTO((
- const char* path,
- int cmode
- ));
- extern int ncopen PROTO((
- const char* path,
- int mode
- ));
- extern int ncredef PROTO((
- int cdfid
- ));
- extern int ncendef PROTO((
- int cdfid
- ));
- extern int ncclose PROTO((
- int cdfid
- ));
- extern int ncinquire PROTO((
- int cdfid,
- int* ndims,
- int* nvars,
- int* natts,
- int* recdim
- ));
- extern int ncsync PROTO((
- int cdfid
- ));
- extern int ncabort PROTO((
- int cdfid
- ));
- extern int ncnobuf PROTO((
- int cdfid
- ));
- extern int ncdimdef PROTO((
- int cdfid,
- const char* name,
- long length
- ));
- extern int ncdimid PROTO((
- int cdfid,
- const char* name
- ));
- extern int ncdiminq PROTO((
- int cdfid,
- int dimid,
- char* name,
- long* length
- ));
- extern int ncdimrename PROTO((
- int cdfid,
- int dimid,
- const char* name
- ));
- extern int ncvardef PROTO((
- int cdfid,
- const char* name,
- nc_type datatype,
- int ndims,
- const int* dim
- ));
- extern int ncvarid PROTO((
- int cdfid,
- const char* name
- ));
- extern int ncvarinq PROTO((
- int cdfid,
- int varid,
- char* name,
- nc_type* datatype,
- int* ndims,
- int* dim,
- int* natts
- ));
- extern int ncvarput1 PROTO((
- int cdfid,
- int varid,
- const long* coords,
- const void* value
- ));
- extern int ncvarget1 PROTO((
- int cdfid,
- int varid,
- const long* coords,
- void* value
- ));
- extern int ncvarput PROTO((
- int cdfid,
- int varid,
- const long* start,
- const long* count,
- void* value
- ));
- extern int ncvarget PROTO((
- int cdfid,
- int varid,
- const long* start,
- const long* count,
- void* value
- ));
- extern int ncvarputs PROTO((
- int cdfid,
- int varid,
- const long* start,
- const long* count,
- const long* stride,
- void* values
- ));
- extern int ncvargets PROTO((
- int cdfid,
- int varid,
- const long* start,
- const long* count,
- const long* stride,
- void* values
- ));
- extern int ncvarputg PROTO((
- int cdfid,
- int varid,
- const long* start,
- const long* count,
- const long* stride,
- const long* imap,
- void* values
- ));
- extern int ncvargetg PROTO((
- int cdfid,
- int varid,
- const long* start,
- const long* count,
- const long* stride,
- const long* imap,
- void* values
- ));
- extern int ncvarrename PROTO((
- int cdfid,
- int varid,
- const char* name
- ));
- extern int ncattput PROTO((
- int cdfid,
- int varid,
- const char* name,
- nc_type datatype,
- int len,
- const void* value
- ));
- extern int ncattinq PROTO((
- int cdfid,
- int varid,
- const char* name,
- nc_type* datatype,
- int* len
- ));
- extern int ncattget PROTO((
- int cdfid,
- int varid,
- const char* name,
- void* value
- ));
- extern int ncattcopy PROTO((
- int incdf,
- int invar,
- const char* name,
- int outcdf,
- int outvar
- ));
- extern int ncattname PROTO((
- int cdfid,
- int varid,
- int attnum,
- char* name
- ));
- extern int ncattrename PROTO((
- int cdfid,
- int varid,
- const char* name,
- const char* newname
- ));
- extern int ncattdel PROTO((
- int cdfid,
- int varid,
- const char* name
- ));
- extern int nctypelen PROTO((
- nc_type datatype
- ));
- extern int ncsetfill PROTO((
- int cdfid,
- int fillmode
- ));
- extern int ncrecinq PROTO((
- int cdfid,
- int* nrecvars,
- int* recvarids,
- long* recsizes
- ));
- extern int ncrecget PROTO((
- int cdfid,
- long recnum,
- void** datap
- ));
- extern int ncrecput PROTO((
- int cdfid,
- long recnum,
- void* * datap
- ));
- #ifdef __cplusplus
- }
- #endif
-
- #endif /* _NETCDF_ */
-